﻿using Assets.XyzCode.Comm;
using Assets.XyzCode.Fight.Game.Enemy.Think;

using System.Collections;

namespace Assets.XyzCode.Fight.Game.Enemy
{
    partial class Enemy_X_Behav
    {
        /** 思考 Cd */
        private readonly CdTimer _thinkCd = new CdTimer(2.0f);

        /** 思考实现 */
        private readonly IThink _thinkImpl = new Think_Composit();

        /// <summary>
        /// ( 携程方式 ) 执行思考
        /// </summary>
        /// <returns>枚举迭代器</returns>
        private IEnumerator Think_XC()
        {
            while (true)
            {
                if (_thinkCd.IsHot() 
                 || StateEnum.Unknown != _currState)
                {
                    // 如果刚刚思考过 ( 也就是思考 Cd 过热 ),
                    // 或者当前状态不是未知
                    yield return 1;
                    continue;
                }

                // 填满 Cd
                _thinkCd.Fill();
                // 执行思考
                _thinkImpl.DoThink(this);
            }
        }
    }
}
